package cn.stylefeng.roses.kernel.conversion.util;

import com.spire.xls.FileFormat;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

import java.io.ByteArrayInputStream;
import java.io.OutputStream;

/**
 * excel相关转化
 *
 * @author fengshuonan
 * @date 2021/8/26 15:07
 */
public class ExcelUtil {

    /**
     * excel转pdf
     *
     * @param inputFile  原有xls或xlsx文件路径
     * @param outputFile 输出的pdf文件路径
     * @author fengshuonan
     * @date 2021/8/26 14:35
     */
    public static void toPdf(String inputFile, String outputFile) {
        //加载Excel文档
        Workbook wb = new Workbook();
        wb.loadFromFile(inputFile);

        //设置转换后的PDF页面高宽适应工作表的内容大小
        wb.getConverterSetting().setSheetFitToPage(true);

        //调用方法保存为PDF格式
        wb.saveToFile(outputFile, FileFormat.PDF);
    }

    /**
     * excel转化为pdf，读入字节，输出到流中
     *
     * @author fengshuonan
     * @since 2023/10/20 22:48
     */
    public static void toPdfByBytes(byte[] inputFileBytes, OutputStream outputStream) {
        //加载Excel文档
        Workbook wb = new Workbook();
        wb.loadFromStream(new ByteArrayInputStream(inputFileBytes));

        //设置转换后的PDF页面高宽适应工作表的内容大小
        wb.getConverterSetting().setSheetFitToPage(true);

        //调用方法保存为PDF格式
        wb.saveToStream(outputStream, FileFormat.PDF);
    }

    /**
     * excel转pdf（指定sheet）
     *
     * @param inputFile   原有xls或xlsx文件路径
     * @param outputFile  输出的pdf文件路径
     * @param sheetNumber 从0开始的sheet
     * @author fengshuonan
     * @date 2021/8/26 14:35
     */
    public static void toPdfSheet(String inputFile, String outputFile, int sheetNumber) {
        //加载Excel文档
        Workbook wb = new Workbook();
        wb.loadFromFile(inputFile);

        //获取第2个工作表
        Worksheet sheet = wb.getWorksheets().get(sheetNumber);

        //调用方法保存为PDF格式
        sheet.saveToPdf(outputFile);
    }

    /**
     * excel转图片
     *
     * @param inputFile  原有xls或xlsx文件路径
     * @param outputFile 输出的pdf文件路径
     * @author fengshuonan
     * @date 2021/8/26 14:35
     */
    public static void toImage(String inputFile, String outputFile) {
        //加载Excel工作表
        Workbook wb = new Workbook();
        wb.loadFromFile(inputFile);

        //获取工作表
        Worksheet sheet = wb.getWorksheets().get(0);

        //调用方法将Excel工作表保存为图片
        sheet.saveToImage(outputFile);
    }

}
